Ontology is a philosophy of what exists. In computer science ontology is used to model entities of the real world and the relations between them, so as to create common dictionaries for their discussion. Basic concepts of ontology include (i) classes of instances/things, and (ii) relations between the classes, as described hereinbelow. Ontology provides a vocabulary for talking about things that exist.
Instances/Things
There are many kinds of “things” in the world. There are physical things like a car, person, boat, screw and transistor. There are other kinds of things which are not physically connected items or not even physical at all, but may nevertheless be defined. A company, for example, is a largely imaginative thing the only physical manifestation of which is its appearance in a list at a registrar of companies. A company may own and employ. It has a defined beginning and end to its life.
Other things can be more abstract such as the Homo Sapiens species, which is a concept that does not have a beginning and end as such even if its members do.
Ontological models are used to talk about “things.” An important vocabulary tool is “relations” between things. An ontology model itself does not include the “things,” but introduces class and relation symbols which can then be used as a vocabulary for talking about and classifying things.
Relations/Properties/Attributes
Relations, also referred to as properties, attributes, functions and slots, are specific associations of things with other things. Relations include:                Relations between things that are part of each other, for example, between a PC and its flat panel screen;        Relations between things that are related through a process such as the process of creating the things, for example, a book and its author;        Relations between things and their measures, for example, a thing and its weight.        
Some relations also relate things to fundamental concepts such as natural numbers or strings of characters—for example, the value of a weight in kilograms, or the name of a person.
Relations play a dual role in ontology. On the one hand, individual things are referenced by way of properties, for example, a person by his name, or a book by its title and author. On the other hand, knowledge being shared is often a property of things, too. A thing can be specified by way of some of its properties, in order to query for the values of other of its properties.
Classes
Not all relations are relevant to all things. It is convenient to discuss the domain of a relation as a “class” of things, also referred to as a flame or, for end-user purposes, as a category. Often domains of several relations coincide, for example, the class Book is the domain for both Author and ISBN Number properties.
There is flexibility in the granularity to which classes are defined. Cars is a class. Fiat Cars can also be a class, with a restricted value of a manufacturer property. It may be unnecessary to address this class, however, since Fiat cars may not have special attributes of interest that are not common to other cars. In principle, one can define classes as granular as an individual car unit, although an objective of ontology is to define classes that have important attributes.
Abstract concepts such as measures, as well as media such as a body of water which cannot maintain its identity after coming into contact with other bodies of water, nay be modeled as classes with a quantity relation mapping them to real numbers.
In a typical mathematical model, a basic ontology comprises:                A set C, the elements of which are called “class symbols;”        For each cεC, a plain language definition of the class c;        A set R, the elements of which are called “relation symbols;”        For each rεR:                    a plain language definition of r; and            a list of class symbols called the domain of r, written c1×c2× . . . . ×cn;                        A set F, the elements of which are called “function symbols;”        For each fεF:                    a plain language definition of f;            a class symbol called the domain of f; and            a class symbol called the co-domain of f; and                        A binary transitive reflexive anti-symmetric relation, I, called the inheritance relation on C×C.        
In the ensuing discussion, the terms “class” and “class symbol” are used interchangeably, for purposes of convenience and clarity. Similarly, the terms “relation” and “relation symbol” are used interchangeably; and the terms “function” and “function symbol” are also used interchangeably. Further, the term attribute is used for a function.
It is apparent to those skilled in the art that if an ontology model is extended to include sets in a class, then a relation on c×d can also be considered as a function from c to sets in d. In this context, a relation may also be considered as a function or an attribute.
If I(c1, c2) then c1 is referred to as a subclass of c2, and c2 is referred to as a superclass of c1. Also, c1 is said to inherit from c2.
A distinguished universal class “Being” is typically postulated to be a superclass of all classes in C.
Variations on an ontology model may include:                Omission of functions, which are in fact a special case of relations;        Restrictions of relations to binary relations, or of functions to unary functions, these being the most commonly used relations and functions;        The ability to specify more about properties of relations, such as multiplicity and invertibility.        
The notion of a class symbol is conceptual, in that it describes a generic genus for an entire species such as Books, Cars, Companies and People. Specific instances of the species within the genus are referred to as “instances” of the class. Thus “Gone with the Wind” is an instance of a class for books, and “IBM” is an instance of a class for companies. Similarly, the notions of relation symbol and function symbol are conceptual, in that they serve as templates for actual relations and functions that operate on instances of classes.
Class symbols, relation symbols and function symbols are similar to object-oriented classes in computer programming, such as C++ classes. Classes, along with their members and field variables, defined within a header file, serve as templates for specific class instances used by a programmer. A compiler uses header files to allocate memory for, and enables a programmer to use instances of classes. Thus a header file can declare a rectangle class with members left, right, top and bottom. The declarations in the header file do not instantiate actual “rectangle objects,” but serve as templates for rectangles instantiated in a program. Similarly, classes of an ontology serve as templates for instances thereof.
There is, however, a distinction between C++ classes and ontology classes. In programming, classes are a template and they are instantiated to create programming objects. In ontology, classes document common structure but the instances exist in the real world and are not created through the class. Also, there is no counterpart to the programming methods, only to the fields, which correspond to functions or attributes.
Ontology provides a vocabulary for speaking about instances, even before the instances themselves are identified. A class Book is used to say that an instance “is a Book.” A function Author allows one to create clauses “author of” about an instance. A relation Siblings allows one to create statements “are siblings” about instances. Inheritance is used to say, for example, that “every Book is a PublishedWork”. Thus all vocabulary appropriate to PublishedWork can be used for Book.
Once an ontology model is available to provide a vocabulary for talking about instances, the instances themselves can be fit into the vocabulary. For each class symbol, c, all instances which satisfy “is a c” are taken to be the set of instances of c, and this set is denoted B(c). Sets of instances are consistent with inheritance, so that B(c1)⊂B(c2) whenever c1 is a subclass of c2. Relation symbols with domain c1×c2× . . . ×cn correspond to relations on B(c1)×B(c2)× . . . ×B(cn). Similarly, function symbols with domain c1 and co-domain c2 correspond to functions with domain B(c1) and co-domain B(c2). It is noted that if class c1 inherits from class c, then every instance of c1 is also an instance of c, and it is therefore known already at the ontology stage that the vocabulary of c is applicable to c1.
Ontology enables creation of a model of multiple classes and a graph of relationships therebetween. When a class is defined, its attributes are described using handles to related classes. These can in turn be used to look up attributes of the related class, and thus attributes of attributes can be accessed to any depth.
Reference is now made to FIG. 1A, which is an illustration of enterprise knowledge relationships. FIG. 1A illustrates a typical information flow within an enterprise. An enterprise deals with dozens of data formats, including relational and XML formats. The same information such as an invoice must be picked up by different applications and departments.
Reference is now made to FIG. 1B, which is an illustration of graph-like relationships between ontology classes, corresponding to the relationships of FIG. 1A. Shown in FIG. 1B are classes for invoices 110, companies 120, products 130, components 140, measurements 150, credit ratings 160, people 170 and contact information 180. Each class is modeled individually, as well as their inter-relationships. When a specific invoice instance is described formally, users can derive required information from it. For example, a customer can retrieve the invoice electronically into a procurement system. A manufacturing department can view a bill of materials of products sold in order to replenish stock. A finance department can read a Dunn & Bradstreet credit rating of a customer in order to assess credit exposure.
In distinction to ontologies, XML Schema, or the earlier standard document type description (DTD), allow modeling of a single class by defining a syntax for documents that describe elements of that class. XML documents have a tree structure that may include attributes, and attributes of attributes to a pre-determined depth. However, a user cannot look up attributes of attributes to a depth that is not explicitly included in the XML Schema. Thus if the invoice of FIG. 1 is modeled using an XML Schema intended for transfer of the invoice to a customer's procurement system, it is unlikely that manufacturing and finance departments will find the information they require inside an XML document for an invoice. If one were to model a full graph of relations between classes using self-referential XML Schema, such a Schema would be unusable, as no finite instance document would be valid according to the Schema.
It may thus be appreciated that an ontological model provides a more flexible basis for presenting data than does an XML Schema, particularly where the same data must be presented to multiple applications. The rigorous structure imposed by an XML Schema is likely to include only attributes of interest to the particular application for which the Schema was designed.
While XML Schema specifies a finite list of fields (attributes, attributes of attributes), an ontology is a comprehensive model of the world's entities by classes and the relations between them. As such, there are several barriers to the adoption of ontology as a basis for data standards, including:                No single party can model the whole world, so unlike a centralized XML Schema, a centralized ontology definition is impractical;        No ontology model will ever be complete or stable, so unlike XML Schema, a notion of backward compatible updates is required;        XML Schema and the table schema of the world's relational databases have considerable commercial traction, and thus an ontology model that cannot leverage existing XML Schema work and existing relational database schema work is unlikely to have commercial traction—the barrier being that the XML, relational database and ontology models are inherently incompatible.        
Prior art ontology systems include the DARPA Agent Markup Language (DAML). Information about DAML is available on the Internet at http://www.daml.org. DAML includes hierarchical relations, and a “meta-level” for formally describing features of an ontology, such as author, name and subject. DAML includes a class of ontologies for describing its own ontologies. DAML includes a formal syntax for relations used to express ranges, domains and cardinality restrictions on domains and co-domains. DAML provides for a “maximum level” class and a “minimum level” class. “Things” is a class for everything, and is a superclass of all classes. “Nothing” is a class for the empty set, and is a subclass of all classes.
Another prior art system is the Resource Description Framework (RDF), developed by the World Wide Web Consortium. Information about RDF is available on the Internet at http://www.w3.org/RDF/. RDF is distributed and contains a grammar for subject-verb-object constructs, but does not contain an ontological model.
Another prior art system is the Knowledge Interchange Format (KIF). Information about KIF is available on the Internet at http://www.logic.stanford.edu/kif/.
Another prior art system is the Ontology Inference Layer (OIL). Information about OIL is available on the Internet at http://www.ontoknowledge.org/oil/. OIL classes are defined “intentionally” rather than “extensionally.” This means that OIL classes can be defined in terms of descriptions that specify the properties that objects must satisfy in order to belong to the class. Attributes of classes play a significant role in OIL. Similar to DAML, OIL includes hierarchical relations, and a “second meta-level” for formally describing features of an ontology, such as author, name and subject. Two types of classes are distinguished in OIL: “primitive” (by default) and “defined”. For primitive OIL classes, their associated attributes are considered necessary but not sufficient for membership in the class. For example, if the primitive class Elephant is defined to be a sub-class of Animal with a constraint stating that skin-colour must be grey, then all elephants must necessarily be animals with grey skin but there may be grey-skinned animals that are not elephants. When a class is “defined” by attributes, its definition is taken be both necessary and sufficient. For example, if the defined class Carnivores is defined to be a sub-class of Animal with the constraint stating that it eats meat, then every carnivore is necessarily a meat eating animal, and every meat eating animal is a carnivore. Intersections and unions of classes are defined in OIL using what are termed class-expressions, so that, for example, Meat AND Fish defines the class of things that are both meat and fish, and NOT Fish can define all things which are not fish.
A general reference on ontology systems is Sowa, John F., Knowledge Representation, Brooks/Cole, Pacific Grove, Calif., 2000.